package ray.mgocc.parser;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class XhtmlParser{
    private DocumentBuilder builder;
    public XhtmlParser(){
        init();
    }
    private void init(){
        try{
            DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
            builder = dbfactory.newDocumentBuilder();
        }catch(Exception e){
            throw new RuntimeException("parser init error.",e);
        }
    }
    public void parse(InputSource in){
        try{
            Document doc = builder.parse(in);
            Element root = doc.getDocumentElement();
            System.out.println("ルート要素のタグ名：" + root.getTagName());
      
            System.out.println("***** ページリスト *****");
            // page要素のリストを取得
            NodeList list = root.getElementsByTagName("page");
            // page要素の数だけループ
            for (int i=0; i < list.getLength() ; i++) {
                // page要素を取得
                Element element = (Element)list.item(i);
                // id属性の値を取得
                String id = element.getAttribute("id");
                // title要素のリストを取得
                NodeList titleList = element.getElementsByTagName("title");
                // title要素を取得
                Element titleElement = (Element)titleList.item(0);
                // title要素の最初の子ノード（テキストノード）の値を取得
                String title = titleElement.getFirstChild().getNodeValue();
                // file要素のリストを取得
                NodeList fileList = element.getElementsByTagName("file");
                // file要素を取得
                Element fileElement = (Element)fileList.item(0);
                // file要素の最初の子ノード（テキストノード）の値を取得
                String file = fileElement.getFirstChild().getNodeValue();

                System.out.println("ID：" + id + "  " +
                                   "タイトル：" + title + "  " +
                                   "ファイル：" + file);
            }
        }catch(Exception e){
            throw new RuntimeException("parse error.",e);
        }
    }
}

